Skip to main content

generateS3BucketName(params): string

Defined in: src/utils/generate-s3-bucket-name/generate-s3-bucket-name.ts:46

Generates a standardised S3 bucket name using the provided components.

S3 buckets have specific naming requirements:

  • Must be globally unique across all AWS accounts
  • Must be between 3-63 characters long
  • Must contain only lowercase letters, numbers, dots, and hyphens
  • Must start and end with a letter or number
  • Cannot contain uppercase characters or underscores
  • Cannot be formatted as an IP address

The name is constructed using the format: <stage>-<service>-bucket[-<suffix>][-<region>] and converted to lowercase. The 'bucket' resource type is automatically included.

Parameters

params

Omit<ResourceNameParts, "resource">

The components used to generate the S3 bucket name.

Returns

string

A lowercase, hyphenated S3 bucket name suitable for AWS usage.

Throws

If the generated name exceeds 63 characters or is less than 3 characters.

Examples

const bucketName = generateS3BucketName({ stage: 'dev', service: 'orders', suffix: 'images', region: 'us-east-1' });
// "dev-orders-bucket-images-us-east-1"
const bucketName = generateS3BucketName({ stage: 'prod', service: 'users' });
// "prod-users-bucket"
const bucketName = generateS3BucketName({ stage: 'staging', service: 'analytics', suffix: 'logs' });
// "staging-analytics-bucket-logs"